Android自定义密码输入框(可显示或隐藏) 您所在的位置:网站首页 android studio输入框控件 Android自定义密码输入框(可显示或隐藏)

Android自定义密码输入框(可显示或隐藏)

2024-03-04 22:06| 来源: 网络整理| 查看: 265

先上效果图

1.首先在layout下新建xml文件 view_pas_edittext

主要控件为EditText和Button,其中Button存放闭眼的图片,其他样式自定(闭眼和眼睛两张图片可在阿里图标下载)

2.新建CustomizePasEditText继承LinearLayout,实现View.onClickListener接口

public class CustomizePasEditText extends LinearLayout implements View.OnClickListener { private EditText editText; private Button showButton; //true为隐藏,false为显示 private boolean mode = true; //设置提示文字 public void setEditTextHint(String hint){ if(editText!=null){ editText.setHint(hint); } } //获得输入框文字 public String getText(){ return editText.getText().toString(); } public CustomizePasEditText(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.view_edittext,this,true); editText = findViewById(R.id.et_view); //一开始密码是隐藏的,因此一开始使用闭眼图片,并且将EditText的输入类型设置为密码(不可见) showButton= findViewById(R.id.bt_show); showButton.setBackgroundResource(R.drawable.hide_pas); editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); showButton.setOnClickListener(this); } @Override public void onClick(View v) { //当点击了显示/隐藏按钮,则改变editText的文字显示方式 switch (v.getId()){ case R.id.bt_show: //从隐藏变显示 if(mode){ editText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); //为了点击之后输入框光标不变 editText.setSelection(editText.getText().length()); showButton.setBackgroundResource(R.drawable.show_pas); mode = !mode; }else { editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); //为了点击之后输入框光标不变 editText.setSelection(editText.getText().length()); showButton.setBackgroundResource(R.drawable.hide_pas); mode = !mode; } break; } } //获得输入框内容 public EditText getEditText(){ return editText; } }

3.在activity中使用

首先在activity的xml中调用该控件

然后在代码中使用

//注册绑定 CustomizePasEditText pasEditText; pasEditText = findViewById(R.id.ed_pas); pasEditText.setEditTextHint(getResources().getString(R.string.ed_hint_pas)); //获得输入内容 String pas = pasEditText.getText();

注意,如果要动态改变输入框样式,需在CustomizePasEditText中编写



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有